package com.sudu.service;

import com.sudu.domain.*;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface VideoService {

    /**
     * 根据id 查找标签
     * @param id
     * @return
     */
    String fineById(int id) ;

    /**
     * 查询所有标签
     * @return
     */
    List<Tag> fineByAll() ;

    /**
     * 保存视频
     *
     * @param video
     * @return 一个 video 实体类
     */
    boolean saveVideo (Video video) ;

    /**
     * 根据 用户id查询视频
     * @param uid 用户id
     * @return 一个 video 数组
     */
    List<Video> selectByUid(int uid) ;

    /**
     * 根据视频id 查询视频
     *
     * @param vid 视频id
     * @return
     */
    Detail selectByVid(int vid) ;

    /**
     * 根据 分类tag 分页查询
     * @param tagId tag id
     * @param page      查询页数
     * @param pageSize  每页查询数
     * @return
     */
    List<Cover> selectByPage(int tagId , int page , int pageSize) ;

    /**
     *  我的发布
     * @param uid
     * @return List<Cover>
     */
    List<Cover> selectCoverByUid(int uid) ;

    /**
     *   根据 tag 分类 获取推荐视频
     * @param tag 分类id int
     * @return List<Cover>
     */
    List<Cover> selectCoverByTag(int tag , int size) ;

    /**
     *  根据 vid（视频id）获取 up 信息
     * @param vid 视频id
     * @return UserInfo
     */
    UserInfo selectUpInfoByVid(int vid) ;

    /**
     * 通过视频id查找Cover集合
     * @param vid 视频id int
     * @param tagId 分类id int
     * @param page  查询的页数 int
     * @param pageSize 每页个数 int
     * @return List<Cover>
     */
    List<Cover> selectCoverByVid(int []  vid ,int tagId , int page , int pageSize) ;

    /**
     * 通过用户id查找Cover集合
     * @param uid 用户id
     * @param tagId 分类id int
     * @param page  查询的页数 int
     * @param pageSize 每页个数 int
     * @return List<Cover>
     */
    List<Cover> getCoverByUid(int uid , int tagId , int page , int pageSize) ;


    /**
     * 获取我发布的视频中包含的tag
     * @param uid  用户id int
     * @return List<Tag>
     */
    List<Tag> getMyCreateTag( int uid) ;

    /**
     * 获取我收藏的视频中包含的tag
     * @param uid  用户id int
     * @return List<Tag>
     */
    List<Tag> getMyFavoriteTag(int uid) ;

    /**
     * 删除视频
     * @param vid 视频id
     * @return Boolean
     */
    Boolean deleteByVid(int vid) ;

    /**
     * 点击量
     * @param vid 视频id int
     * @return Boolean
     */
    Boolean click(int vid) ;

    /**
     * 评论量 + 1
     * @param vid 视频id int
     * @return Boolean
     */
    Boolean comment (int vid) ;

    /**
     * 模糊搜索
     * @param content 搜索框 value
     * @param tagId 分类id int
     * @param page  查询的页数 int
     * @param pageSize 每页个数 int
     * @return  List<Cover>
     */
    List<Cover> search ( String content , int tagId , int page , int pageSize ) ;

    /**
     * 根据模糊搜索获取符合的视频tag
     * @param content String 搜索框value
     * @return List<Tag> ，tag id集合
     */
    List<Tag> searchTagByContent(String content) ;

    /**
     * 删除评论更改评论长度
     * @param vid 视频id
     * @return boolean
     */
    boolean delCom(int vid) ;
}
